package com.neusoft.thread1safe;
/**
 * 线程的让步
 * @author Zhang.Yan
 *
 */
public class ThreadYieldTest
{
	
	public static void main(String[] args) throws InterruptedException
	{
		// 创建线程对象
		YieldThread t1 = new YieldThread("t1");
		YieldThread t2 = new YieldThread("t2");
		// 启动线程
		t1.start();
		t2.start();
		// 主线程休眠100毫秒
		Thread.sleep(100);
		// 终止线程
		t1.interrupt();
		t2.interrupt();
		//从输出结果可以看到，当某个线程执行到10次、20次等时，就会马上切换到另一个线程执行，接下来再交替执行，如此往复。
		
	}
	
}


class YieldThread extends Thread
{
	
	private int i;
	
	public YieldThread(String name)
	{
		super(name);
	}
	
	@Override
	public void run()
	{
		while(!isInterrupted())
		{
			System.out.println(getName() + "执行了" + ++i + "次");
			if(i % 10 == 0) 
			{// 当i能对10整除时，则让步
				Thread.yield();
			}

		}
	}
}



